Módulo geom
===============


Ejemplo testeando la librería de geom::

    import gvsig
    reload(gvsig)
    from gvsig import *
    from gvsig import geom


    def main(*args):

        # Create Polygon
        print "\nCreate Polygon"
        x = geom.createPolygon()
        pol_1 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2, 4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_1: ", pol_1.convertToWKT()
        pol_2 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2,4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_2: ", pol_2.convertToWKT()
        pol_3 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2,4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_3: ", pol_3.convertToWKT()
        pol_4 = geom.createPolygon(geom.D2,[(0,0),(10,10),[3,3],[3,6],[0,0]])
        print "pol_4: ", pol_4.convertToWKT()


        # Create MultiPolygon
        print "\nCreate MultiPolygon"
        multipolygon1 = geom.createMultiPolygon()
        multipolygon1.addSurface(pol_1)
        multipolygon1.addSurface(pol_2)
        multipolygon1.addSurface(pol_3)
        print "multipolygon1: ", multipolygon1.convertToWKT()

        multipolygon2 = geom.createMultiPolygon(polygons=[pol_1, pol_2, pol_3])
        print "multipolygon2: ", multipolygon2.convertToWKT()

        p2 = geom.createPoint(geom.D2,1,2)
        print "p2:", p2
        line2 = geom.createLine(geom.D2, [[10,19],p2,[5,2]])
        print line2
        print line2.convertToWKT()

        y = geom.createPoint(geom.D3M,10,1,5,8)
        z = geom.createPoint(geom.D3,10, 1, 5)
        print "point y: ", y,type(y)
        print "point z", z, type(z)

        print "preparing 3d"
        x = geom.createLine(geom.D3M,[(10,10,100,8),(1,95,2,8)])
        print x.convertToWKT()

        # Create point
        print "\nCreate Point"
        point1 = geom.createPoint(geom.D2,10, 10)
        point2 = geom.createGeometry(geom.POINT)
        point2.setX(15)
        point2.setY(15)
        print "Point1: ", point1
        print "Point2: ", point2

        point1 = geom.createPoint(geom.D2,10, 10)
        # Create line
        print "\nCreate Line"
        line1 = geom.createGeometry(geom.LINE)
        line1.addVertex(geom.createPoint(geom.D2,0,0))
        line1.addVertex(geom.createPoint(geom.D2,10,10))
        print "Line1: ", line1.convertToWKT()

        p2 = geom.createPoint(geom.D2,1,2)
        print " === LINE == "
        line2 = geom.createLine(geom.D2, [[10,19], point1 ,p2,[5,2]])
        print "Line2 object: ", line2
        print "Line2: ", line2.convertToWKT()
        print "1", line2.getVertex(0)
        print "2", line2.getVertex(1)
        print "3", line2.getVertex(2)
        print "4", line2.getVertex(3)

        # Create polygon
        print "\nCreate Polygon"
        g = geom.createGeometry(geom.POLYGON)
        g.addVertex(geom.createPoint(geom.D2,0,0))
        g.addVertex(geom.createPoint(geom.D2,10,10))
        g.addVertex(geom.createPoint(geom.D2,10,0))
        g.addVertex(geom.createPoint(geom.D2,0, 0))


        print "JTS of the Polygon 1: ", g.convertToWKT()
        g.setVertex(2, geom.createPoint(geom.D2, 15, 15))
        print "JTS of the Polygon 1 modified: ", g.convertToWKT()

        poli_1 = geom.createPolygon(geom.D2, [[0,0],[1,1],[2,3],[3,6],[0,0]])
        print "Poli_1", poli_1.convertToWKT()
        poli_2 = geom.createPolygon(geom.D3, [[0,1,2],[1,1,5],geom.createPoint(geom.D3,2,1,5),[0,1,2]])
        print "Poli_2", poli_2

        # Create gvSIG geometry from a WKT or WKB
        print "\nCreate gvSIG geometry from WKT or WKB"
        wkt = "POLYGON ((0 0, 150 150, 100 0, 0 0))"
        x = geom.createGeometryFromWKT(wkt)
        print "Polygon from WKT: ", x
        print "Type polygon: ", type(x)

        # Create 3D geometry
        print "\nCreate 3D Geometry"
        p3d = geom.createGeometry(geom.POINT, geom.D3)
        p3d.setX(10)
        p3d.setY(10)
        p3d.setZ(100)
        print "Point 3D: ", p3d, type(p3d)
        p1_3d = geom.createPoint(geom.D3,1,3,3)
        print "Point 3D P1: ", p1_3d

        # Create Multipoint
        print "\nCreate Multipoint: "
        multipoint1 = geom.createMultiPoint(points=[geom.createPoint(geom.D2, 10,10), geom.createPoint(geom.D2,5,2), geom.createPoint(geom.D2,8,3)])
        print "multipoint1: ", multipoint1.convertToWKT()
        multipoint1.addPrimitive(geom.createPoint(geom.D2,3, 2))
        print "multipoint1 modified: ", multipoint1.convertToWKT()

        multipoint2 = geom.createMultiPoint()
        print "multipoint2: ", multipoint2.convertToWKT()

        multipoint3 = geom.createMultiPoint(geom.D3,[[19,10,8],[3,5,7],[35,5,5]])
        print "multipoint3: ", multipoint3.convertToWKT()

        # Create Polygon
        print "\nCreate Polygon"
        x = geom.createPolygon()
        pol_1 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2,4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_1: ", pol_1.convertToWKT()
        pol_2 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2,4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_2: ", pol_2.convertToWKT()
        pol_3 = geom.createPolygon(vertexes=[geom.createPoint(geom.D2,4,5),geom.createPoint(geom.D2,3,3),geom.createPoint(geom.D2,3,2),geom.createPoint(geom.D2,4,5)])
        print "pol_3: ", pol_3.convertToWKT()
        pol_4 = geom.createPolygon(geom.D2,[(0,0),(10,10),[3,3],[3,6],[0,0]])
        print "pol_4: ", pol_4.convertToWKT()


        # Create MultiPolygon
        print "\nCreate MultiPolygon"
        multipolygon1 = geom.createMultiPolygon()
        multipolygon1.addSurface(pol_1)
        multipolygon1.addSurface(pol_2)
        multipolygon1.addSurface(pol_3)
        print "multipolygon1: ", multipolygon1.convertToWKT()

        multipolygon2 = geom.createMultiPolygon(polygons=[pol_1, pol_2, pol_3])
        print "multipolygon2: ", multipolygon2.convertToWKT()

        multipolygon3 = geom.createMultiPolygon(geom.D2,[[[0,0],[1,1],[2,2],[0,0]],[[2,5],[3,5],[1,2],[2,5]],pol_4])
        print "multipolygon3: ", multipolygon3.convertToWKT()

        # CreateLine
        print "\nCreate Line"
        line1 = geom.createLine()


        line1.addVertex(geom.createPoint2D(1,1))
        line1.addVertex(geom.createPoint2D(3,3))
        print "line1: ", line1.convertToWKT()
        line2 = geom.createLine(vertexes=[geom.createPoint2D(0,0), geom.createPoint2D(10,10)])
        print "line2: ", line2.convertToWKT()
        line3 = geom.createLine(geom.D2,[[0,1],[1,5],[5,3]])
        print "line3: ", line3.convertToWKT()

        # Create MultiLine
        print "\nCreate MultiLine"
        multiline1 = geom.createMultiLine()
        multiline1.addCurve(line1)
        multiline1.addCurve(line2)
        print "multiline1: ", multiline1.convertToWKT()

        multiline2 = geom.createMultiLine(lines=[line1, line2], subtype=geom.D2)
        print "multiline2: ", multiline2.convertToWKT()


        # Create Envelope
        envelope = geom.createEnvelope(pointMin=geom.createPoint2D(10,0),pointMax=geom.createPoint2D(10,20))
        print "envelope: ", envelope
        env1 = geom.createEnvelope(point1,[38,29])
        print "env1: ", env1,type(env1)

        # Create from WKT
        print "\nCreate geometr from WKT"
        wkt = geom.createGeometryFromWKT("MULTIPOLYGON (((4 5, 3 3, 3 2, 4 5)), ((4 5, 3 3, 3 2, 4 5)), ((4 5, 3 3, 3 2, 4 5)))")
        print "wkt: ", wkt.convertToWKT()

        # Create 2D
        pg = geom.createPoint2D(19,5)
        print pg
        lg = geom.createLine2D()
        print lg
        mg = geom.createPolygon2D()
        print mg
        mg2 = geom.createPolygon2D([[1,5],[4,5],[1,3],[25,2],pg,[1,5]])
        print mg2.convertToWKT()
        x = geom.createPoint2D(1)
        print x
